home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / Tools / Musik / Misc / Amster / Source / amster_Cat.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-27  |  23.4 KB  |  694 lines

  1. /****************************************************************
  2.    This file was created automatically by `FlexCat 2.4'
  3.    from "locale/Amster.cd".
  4.  
  5.    Do NOT edit by hand!
  6. ****************************************************************/
  7.  
  8. /****************************************************************
  9.     This file uses the auto initialization possibilities of
  10.     Dice, gcc and SAS/C, respectively.
  11.  
  12.     Dice does this by using the keywords __autoinit and
  13.     __autoexit, SAS uses names beginning with _STI or
  14.     _STD, respectively. gcc uses the asm() instruction,
  15.     to emulate C++ constructors and destructors.
  16.  
  17.     Using this file you don't have *all* possibilities of
  18.     the locale.library. (No Locale or Language arguments are
  19.     supported when opening the catalog. However, these are
  20.     *very* rarely used, so this should be sufficient for most
  21.     applications.
  22. ****************************************************************/
  23.  
  24.  
  25. /*
  26.     Include files and compiler specific stuff
  27. */
  28. #include <exec/memory.h>
  29. #include <libraries/locale.h>
  30. #include <libraries/iffparse.h>
  31.  
  32. #include <proto/exec.h>
  33. #include <proto/dos.h>
  34. #include <proto/locale.h>
  35. #include <proto/utility.h>
  36. #include <proto/iffparse.h>
  37.  
  38. #include <stdlib.h>
  39. #include <string.h>
  40.  
  41.  
  42.  
  43. #include "Amster_cat.h"
  44.  
  45.  
  46. /*
  47.     Variables
  48. */
  49. struct FC_String Amster_Strings[326] = {
  50.     { (STRPTR) "Napster client", 0 },
  51.     { (STRPTR) "About Amster", 1 },
  52.     { (STRPTR) "<to be removed>", 2 },
  53.     { (STRPTR) "<to be replaced>", 3 },
  54.     { (STRPTR) "<to be removed>", 4 },
  55.     { (STRPTR) "<to be replaced>", 5 },
  56.     { (STRPTR) "<to be replaced>", 6 },
  57.     { (STRPTR) "<to be replaced>", 7 },
  58.     { (STRPTR) "<to be removed>", 8 },
  59.     { (STRPTR) "_OK", 9 },
  60.     { (STRPTR) "Warning!", 10 },
  61.     { (STRPTR) "Amster is still downloading some MP3's.\n"\
  62.     "Do you want to stop transfers?", 11 },
  63.     { (STRPTR) "_Yes|*_No", 12 },
  64.     { (STRPTR) "Select ARexx script to run...", 13 },
  65.     { (STRPTR) "Amster", 14 },
  66.     { (STRPTR) "?\000About...", 15 },
  67.     { (STRPTR) "About MUI...", 16 },
  68.     { (STRPTR) "Help...", 17 },
  69.     { (STRPTR) "H\000Hide", 18 },
  70.     { (STRPTR) "Q\000Quit", 19 },
  71.     { (STRPTR) "Library", 20 },
  72.     { (STRPTR) "O\000Open...", 21 },
  73.     { (STRPTR) "S\000Save", 22 },
  74.     { (STRPTR) "A\000Save as...", 23 },
  75.     { (STRPTR) "Settings", 24 },
  76.     { (STRPTR) "Icon Panel", 25 },
  77.     { (STRPTR) "MUI...", 26 },
  78.     { (STRPTR) "Configuration...", 27 },
  79.     { (STRPTR) "Save settings", 28 },
  80.     { (STRPTR) "Windows", 29 },
  81.     { (STRPTR) "Debug", 30 },
  82.     { (STRPTR) "Library", 31 },
  83.     { (STRPTR) "Download", 32 },
  84.     { (STRPTR) "Messages", 33 },
  85.     { (STRPTR) "New chat window", 34 },
  86.     { (STRPTR) "ARexx", 35 },
  87.     { (STRPTR) "Execute script...", 36 },
  88.     { (STRPTR) "_Connect", 37 },
  89.     { (STRPTR) "_Disconnect", 38 },
  90.     { (STRPTR) "_Reconnect", 39 },
  91.     { (STRPTR) "Not connected to a server.", 40 },
  92.     { (STRPTR) "Connecting...", 41 },
  93.     { (STRPTR) "Connecting to %s...", 42 },
  94.     { (STRPTR) "Connection to %s failed.", 43 },
  95.     { (STRPTR) "Finding optimal server...", 44 },
  96.     { (STRPTR) "Failed to find optimal server.", 45 },
  97.     { (STRPTR) "%d songs in %d libraries (%d GB)", 46 },
  98.     { (STRPTR) "Song", 47 },
  99.     { (STRPTR) "Max.", 48 },
  100.     { (STRPTR) "_Search", 49 },
  101.     { (STRPTR) "\033c\033b-- Advanced Search Options --", 50 },
  102.     { (STRPTR) "Use", 51 },
  103.     { (STRPTR) "Reset", 52 },
  104.     { (STRPTR) "Line speed must be", 53 },
  105.     { (STRPTR) "Bitrate must be", 54 },
  106.     { (STRPTR) "Frequency must be", 55 },
  107.     { (STRPTR) "Unknown", 56 },
  108.     { (STRPTR) "14.4 Modem", 57 },
  109.     { (STRPTR) "28.8 Modem", 58 },
  110.     { (STRPTR) "33.6 Modem", 59 },
  111.     { (STRPTR) "56K Modem", 60 },
  112.     { (STRPTR) "ISDN 64K", 61 },
  113.     { (STRPTR) "ISDN 128K", 62 },
  114.     { (STRPTR) "Cable", 63 },
  115.     { (STRPTR) "DSL", 64 },
  116.     { (STRPTR) "T1", 65 },
  117.     { (STRPTR) "T3+", 66 },
  118.     { (STRPTR) "User", 67 },
  119.     { (STRPTR) "List all MP3 files shared by a single user", 68 },
  120.     { (STRPTR) "Browse", 69 },
  121.     { (STRPTR) "Result:", 70 },
  122.     { (STRPTR) "Not important", 71 },
  123.     { (STRPTR) "At least", 72 },
  124.     { (STRPTR) "Equal to", 73 },
  125.     { (STRPTR) "At best", 74 },
  126.     { (STRPTR) "Cl_ear", 75 },
  127.     { (STRPTR) "Clear a_ll", 76 },
  128.     { (STRPTR) "Do_wnload", 77 },
  129.     { (STRPTR) "Searching...", 78 },
  130.     { (STRPTR) "No files found.", 79 },
  131.     { (STRPTR) "1 file found.", 80 },
  132.     { (STRPTR) "%d files found.", 81 },
  133.     { (STRPTR) "Requesting list from user...", 82 },
  134.     { (STRPTR) "\033cSong", 83 },
  135.     { (STRPTR) "\033cSize", 84 },
  136.     { (STRPTR) "\033cTime", 85 },
  137.     { (STRPTR) "\033cUser", 86 },
  138.     { (STRPTR) "\033cLink", 87 },
  139.     { (STRPTR) "File", 88 },
  140.     { (STRPTR) "Bitrate", 89 },
  141.     { (STRPTR) "Frequency", 90 },
  142.     { (STRPTR) "MD5", 91 },
  143.     { (STRPTR) "\033cStatus", 92 },
  144.     { (STRPTR) "\033cCps", 93 },
  145.     { (STRPTR) "\033cTime", 94 },
  146.     { (STRPTR) "Amster Configuration", 95 },
  147.     { (STRPTR) "Error", 96 },
  148.     { (STRPTR) "You must be connected to change\n"\
  149.     "your e-mail address.", 97 },
  150.     { (STRPTR) "User", 98 },
  151.     { (STRPTR) "Options", 99 },
  152.     { (STRPTR) "Network", 100 },
  153.     { (STRPTR) "Events", 101 },
  154.     { (STRPTR) "Advanced", 102 },
  155.     { (STRPTR) "Username", 103 },
  156.     { (STRPTR) "Password", 104 },
  157.     { (STRPTR) "E-Mail", 105 },
  158.     { (STRPTR) "U_pdate", 106 },
  159.     { (STRPTR) "Connection", 107 },
  160.     { (STRPTR) "Download path", 108 },
  161.     { (STRPTR) "Select your download directory...", 109 },
  162.     { (STRPTR) "Clear list before new searches", 110 },
  163.     { (STRPTR) "Auto-connect on program startup", 111 },
  164.     { (STRPTR) "<to be deleted>", 112 },
  165.     { (STRPTR) "Startup", 113 },
  166.     { (STRPTR) "Exit", 114 },
  167.     { (STRPTR) "Connect", 115 },
  168.     { (STRPTR) "Disconnect", 116 },
  169.     { (STRPTR) "Download finished", 117 },
  170.     { (STRPTR) "Transfer error", 118 },
  171.     { (STRPTR) "MP3 player", 119 },
  172.     { (STRPTR) "Script", 120 },
  173.     { (STRPTR) "Select ARexx script...", 121 },
  174.     { (STRPTR) "Sound", 122 },
  175.     { (STRPTR) "Select sound file...", 123 },
  176.     { (STRPTR) "Test", 124 },
  177.     { (STRPTR) "Meta server", 125 },
  178.     { (STRPTR) "Amster gets MP3 server address from this\n"\
  179.     "server. You don't need to change it.", 126 },
  180.     { (STRPTR) "MP3 server", 127 },
  181.     { (STRPTR) "MP3 server address. If you want to get it from\n"\
  182.     "the meta server, leave this string empty.", 128 },
  183.     { (STRPTR) "Version", 129 },
  184.     { (STRPTR) "Listening port", 130 },
  185.     { (STRPTR) "\033rBehind firewall", 131 },
  186.     { (STRPTR) "_Save", 132 },
  187.     { (STRPTR) "_Use", 133 },
  188.     { (STRPTR) "_Cancel", 134 },
  189.     { (STRPTR) "Cannot save configuration!", 135 },
  190.     { (STRPTR) "Amster Debug", 136 },
  191.     { (STRPTR) "_Clear", 137 },
  192.     { (STRPTR) "Connected.", 138 },
  193.     { (STRPTR) "Login failed!", 139 },
  194.     { (STRPTR) "Logged in.", 140 },
  195.     { (STRPTR) "<to be removed>", 141 },
  196.     { (STRPTR) "Server is busy. Try again later.", 142 },
  197.     { (STRPTR) "Got '%s' from Napster.", 143 },
  198.     { (STRPTR) "Port number needed (hostname:port)!", 144 },
  199.     { (STRPTR) "Nickname already registered.", 145 },
  200.     { (STRPTR) "Amster Download", 146 },
  201.     { (STRPTR) "<to be replaced>", 147 },
  202.     { (STRPTR) "<to be replaced>", 148 },
  203.     { (STRPTR) "<to be replaced>", 149 },
  204.     { (STRPTR) "<to be replaced>", 150 },
  205.     { (STRPTR) "<to be replaced>", 151 },
  206.     { (STRPTR) "<to be replaced>", 152 },
  207.     { (STRPTR) "<to be replaced>", 153 },
  208.     { (STRPTR) "Play", 154 },
  209.     { (STRPTR) "_Abort", 155 },
  210.     { (STRPTR) "_Resume", 156 },
  211.     { (STRPTR) "Cleanup", 157 },
  212.     { (STRPTR) "Select filename to download...", 158 },
  213.     { (STRPTR) "Resume Information", 159 },
  214.     { (STRPTR) "\033cThe file '%s'\n"\
  215.     "already exists in your download directory.\n"\
  216.     "\n"\
  217.     "\033bLocal file size: \033n%ld\n"\
  218.     "\033bRemote file size: \033n%ld\n"\
  219.     "\n"\
  220.     "\033bLocal MD5 checksum:\n"\
  221.     "\033n%s\n"\
  222.     "\n"\
  223.     "\033bRemote MD5 checksum:\n"\
  224.     "\033n%s\n"\
  225.     "\n"\
  226.     "%s", 160 },
  227.     { (STRPTR) "«N/A»", 161 },
  228.     { (STRPTR) "File is already completely downloaded, or\n"\
  229.     "remote file is smaller than local file.", 162 },
  230.     { (STRPTR) "The files appear to be identical.\n"\
  231.     "Resuming should be safe.", 163 },
  232.     { (STRPTR) "The MD5 checksums of the files do not match.\n"\
  233.     "Resuming would destroy your file.", 164 },
  234.     { (STRPTR) "The file comment of the local file to resume\n"\
  235.     "does not contain any MD5 checksum.\n"\
  236.     "The files may not be identical.", 165 },
  237.     { (STRPTR) "R_esume anyway|_Rename|_Overwrite|*_Cancel", 166 },
  238.     { (STRPTR) "_Overwrite|_Rename|*_Cancel", 167 },
  239.     { (STRPTR) "*_Resume|R_ename|_Overwrite|_Cancel", 168 },
  240.     { (STRPTR) "Amster Messenger", 169 },
  241.     { (STRPTR) "You're not connected!", 170 },
  242.     { (STRPTR) "_Add", 171 },
  243.     { (STRPTR) "_Remove", 172 },
  244.     { (STRPTR) "Remove a_ll", 173 },
  245.     { (STRPTR) "File sharing", 174 },
  246.     { (STRPTR) "Select files to add", 175 },
  247.     { (STRPTR) "Save library", 176 },
  248.     { (STRPTR) "Load library", 177 },
  249.     { (STRPTR) "Error adding '%s' (size: %ld, bitrate: %ld, frequency: %ld)", 178 },
  250.     { (STRPTR) "%ld songs (%ld %s)", 179 },
  251.     { (STRPTR) "kB", 180 },
  252.     { (STRPTR) "MB", 181 },
  253.     { (STRPTR) "GB", 182 },
  254.     { (STRPTR) "Cannot open %s V%d!\n", 183 },
  255.     { (STRPTR) "Cannot create mui app!\n", 184 },
  256.     { (STRPTR) "TCP/IP stack needed!", 185 },
  257.     { (STRPTR) "Network error.", 186 },
  258.     { (STRPTR) "recv() error!", 187 },
  259.     { (STRPTR) "Hostname lookup failed!", 188 },
  260.     { (STRPTR) "Socket() error!", 189 },
  261.     { (STRPTR) "Cannot connect!", 190 },
  262.     { (STRPTR) "N\000Navigator", 191 },
  263.     { (STRPTR) "Connect", 192 },
  264.     { (STRPTR) "T\000Connect to...", 193 },
  265.     { (STRPTR) "Reconnect", 194 },
  266.     { (STRPTR) "Disconnect", 195 },
  267.     { (STRPTR) "Upload", 196 },
  268.     { (STRPTR) "L\000Last saved", 197 },
  269.     { (STRPTR) "Hz", 198 },
  270.     { (STRPTR) "kbps", 199 },
  271.     { (STRPTR) "Paths", 200 },
  272.     { (STRPTR) "\033ckbps", 201 },
  273.     { (STRPTR) "\033cHz", 202 },
  274.     { (STRPTR) "Logging into %s...", 203 },
  275.     { (STRPTR) "Connection to %s failed -- %s.", 204 },
  276.     { (STRPTR) "Uploading sharing library...", 205 },
  277.     { (STRPTR) "unknown error #%d", 206 },
  278.     { (STRPTR) "network is down", 207 },
  279.     { (STRPTR) "network is unreachable", 208 },
  280.     { (STRPTR) "connection reset by peer", 209 },
  281.     { (STRPTR) "operation timed out", 210 },
  282.     { (STRPTR) "connection refused", 211 },
  283.     { (STRPTR) "broken pipe", 212 },
  284.     { (STRPTR) "Res_ume", 213 },
  285.     { (STRPTR) "%ld songs (%s %s)", 214 },
  286.     { (STRPTR) "Requested file was not found in sharing database.\n", 215 },
  287.     { (STRPTR) "User '%s' requested file '%s'.\n", 216 },
  288.     { (STRPTR) "File '%s' already exists in library.\n", 217 },
  289.     { (STRPTR) "Add _recursive", 218 },
  290.     { (STRPTR) "_Play", 219 },
  291.     { (STRPTR) "Select directory to add", 220 },
  292.     { (STRPTR) "File '%s' cannot be shared (illegal characters in filename)", 221 },
  293.     { (STRPTR) "File '%s' cannot be shared (invalid extension)", 222 },
  294.     { (STRPTR) "At least one file failed to be added to library.\n"\
  295.     "Please consult the debug window for details.", 223 },
  296.     { (STRPTR) "Account", 224 },
  297.     { (STRPTR) "The username to login with.", 225 },
  298.     { (STRPTR) "Your password. Don't forget it, once\n"\
  299.     "you have registered your account.", 226 },
  300.     { (STRPTR) "Your e-mail address.", 227 },
  301.     { (STRPTR) "Click this button to update your\n"\
  302.     "e-mail address on the server.", 228 },
  303.     { (STRPTR) "Choose your connection speed from this\n"\
  304.     "list. Be honest with your choice.", 229 },
  305.     { (STRPTR) "Directory where downloaded files\n"\
  306.     "will be stored.", 230 },
  307.     { (STRPTR) "Miscellaneous", 231 },
  308.     { (STRPTR) "Always ask filename", 232 },
  309.     { (STRPTR) "Add downloaded files to library", 233 },
  310.     { (STRPTR) "Auto-save library on program exit", 234 },
  311.     { (STRPTR) "Lamps", 235 },
  312.     { (STRPTR) "Lamp class to use as link speed\n"\
  313.     "indicator for each search result.", 236 },
  314.     { (STRPTR) "Lamp", 237 },
  315.     { (STRPTR) "TWFmultiLED", 238 },
  316.     { (STRPTR) "Server list", 239 },
  317.     { (STRPTR) "Don't remember", 240 },
  318.     { (STRPTR) "Save on exit", 241 },
  319.     { (STRPTR) "Cache servers", 242 },
  320.     { (STRPTR) "\033bDon't remember:\n"\
  321.     "\033nDo not save to file.\n"\
  322.     "\n"\
  323.     "\033bSave on exit:\n"\
  324.     "\033nSave to file on program exit.\n"\
  325.     "\n"\
  326.     "\033bCache servers:\n"\
  327.     "\033nAdd new servers to the list and\n"\
  328.     "save it on program exit.", 243 },
  329.     { (STRPTR) "Filename length", 244 },
  330.     { (STRPTR) "Max. filename length. Files exceeding\n"\
  331.     "this limit will be truncated and terminated\n"\
  332.     "with the .mp3 extension.", 245 },
  333.     { (STRPTR) "Upload finished", 246 },
  334.     { (STRPTR) "Command", 247 },
  335.     { (STRPTR) "AmigaDOS command used to play a file.\n"\
  336.     "%f will be replaced with the filename.\n"\
  337.     "Example:\n"\
  338.     "\n"\
  339.     "RexxC:RX Rexx/PlayAmigaAmp.rexx \"%f\"", 248 },
  340.     { (STRPTR) "Network", 249 },
  341.     { (STRPTR) "TCP port to use for incoming connections\n"\
  342.     "(for both downloads and uploads) when the\n"\
  343.     "other user is behind a firewall.", 250 },
  344.     { (STRPTR) "Only make outgoing connections, so you\n"\
  345.     "can download and share (upload) files\n"\
  346.     "from behind a firewall.", 251 },
  347.     { (STRPTR) "Transfer", 252 },
  348.     { (STRPTR) "Concurrent downloads", 253 },
  349.     { (STRPTR) "This is the maximum number of files\n"\
  350.     "to download at the same time. The rest\n"\
  351.     "will be queued and downloaded later.", 254 },
  352.     { (STRPTR) "Concurrent uploads", 255 },
  353.     { (STRPTR) "This is the maximum number of files\n"\
  354.     "to upload at the same time. Requests\n"\
  355.     "coming in when the queue if full will\n"\
  356.     "be rejected.", 256 },
  357.     { (STRPTR) "Unlimited", 257 },
  358.     { (STRPTR) "Pri", 258 },
  359.     { (STRPTR) "\033bCaution!\n"\
  360.     "\033nThis sets the task priority. Only change this\n"\
  361.     "to anything but 0 if you know what you are doing.", 259 },
  362.     { (STRPTR) "Queue limit retries", 260 },
  363.     { (STRPTR) "Number of times Amster retry download\n"\
  364.     "request before giving up.", 261 },
  365.     { (STRPTR) "Delay between retries", 262 },
  366.     { (STRPTR) "Number of seconds between each retry.", 263 },
  367.     { (STRPTR) "Failed to open main window!\n", 264 },
  368.     { (STRPTR) "Account successfully registered.", 265 },
  369.     { (STRPTR) "I/O error with file '%s'%s", 266 },
  370.     { (STRPTR) "Homepage <http://home.worldonline.dk/~jlaur/amiga/amster>", 267 },
  371.     { (STRPTR) "Mailing list <http://www.egroups.com/group/amster>", 268 },
  372.     { (STRPTR) "Unofficial Napster FAQ <http://napster.cjb.net>", 269 },
  373.     { (STRPTR) "\033cCopyright © 1999-2000 by Gürer Özen\n"\
  374.     "Copyright © 2000 by Jacob Laursen\n"\
  375.     "\n"\
  376.     "MUI is copyright © by Stefan Stuntz\n"\
  377.     "NList.mcc is copyright © by Gilles Masson\n"\
  378.     "Lamp.mcc is copyright © by Maik Schreiber\n"\
  379.     "TWFmultiLED.mcc is copyright © by Christopher Page", 270 },
  380.     { (STRPTR) "\033c\033bAmster was brought to you by...\033n\n"\
  381.     "\n"\
  382.     "\033l\033i· Jacob Laursen <laursen@myself.com>\n"\
  383.     "· Gürer Özen <palpa@linuxfan.com>\n"\
  384.     "\033r\033nCoding\n"\
  385.     "\n"\
  386.     "\033l\033i· Jacob Laursen <laursen@myself.com>\n"\
  387.     "\033r\033nDocumentation\n"\
  388.     "\n"\
  389.     "\033l\033i· Llorenç Grau <llor69@olivet.com>\n"\
  390.     "\033r\033nCatalan translation\n"\
  391.     "\n"\
  392.     "\033l\033i· Vit Sindlar <sindlarv@voskop.cz>\n"\
  393.     "\033r\033nCzech translation\n"\
  394.     "\n"\
  395.     "\033l\033i· Jacob Laursen <laursen@myself.com>\n"\
  396.     "\033r\033nDanish translation\n"\
  397.     "\n"\
  398.     "\033l\033i· Frank Mosch <frank.mosch@pandora.be>\n"\
  399.     "· Guno Heitman <Guno@cable.A2000.nl>\n"\
  400.     "\033r\033nDutch translation\n"\
  401.     "\n"\
  402.     "\033l\033i· Janne Karppanen <janne.karppanen@quicknet.inet.fi>\n"\
  403.     "· Samppa Rönkä <eksotic@dlc.fi>\n"\
  404.     "\033r\033nFinnish translation\n"\
  405.     "\n"\
  406.     "\033l\033i· Jerome Chesnot <jchesnot@noname.fr>\n"\
  407.     "\033r\033nFrench translation\n"\
  408.     "\n"\
  409.     "\033l\033i· Heiko Hayn <Smeagel@gmx.net>\n"\
  410.     "· Sönke Tesch <s.tesch@sh-home.de>\n"\
  411.     "\033r\033nGerman translation\n"\
  412.     "\n"\
  413.     "\033l\033i· Álmos Rajnai <racs@fs2.bdtf.hu>\n"\
  414.     "· Péter Horváth <pcpince@syneco.hu>\n"\
  415.     "\033r\033nHungarian translation\n"\
  416.     "\n"\
  417.     "\033l\033i· Francesco Celli <mc3510@mclink.it>\n"\
  418.     "· Francesco Mancuso <mcfrank@mediatel.it>\n"\
  419.     "\033r\033nItalian translation\n"\
  420.     "\n"\
  421.     "\033l\033i· Øyvind Falch <oyvind.falch@triumph.no>\n"\
  422.     "\033r\033nNorwegian translation\n"\
  423.     "\n"\
  424.     "\033l\033i· Rúben Alvim <alvim_r@yahoo.com>\n"\
  425.     "· Joel Alvim <mindwalker@mail.telepac.pt>\n"\
  426.     "\033r\033nPortuguese translation\n"\
  427.     "\n"\
  428.     "\033l\033i· Oleg Sergeev <bigblack@mail.lanck.net>\n"\
  429.     "· Andrew Boyarintsev <ntrs@redline.ru>\n"\
  430.     "\033r\033nRussian translation\n"\
  431.     "\n"\
  432.     "\033l\033i· Uros Bogataj <urosb@technologist.com>\n"\
  433.     "· Damir Arh <damir.arh@telesat.si>\n"\
  434.     "\033r\033nSlovenian translation\n"\
  435.     "\n"\
  436.     "\033l\033i· Javier de las Rivas <javierdlr@retemail.es>\n"\
  437.     "\033r\033nSpanish translation\n"\
  438.     "\n"\
  439.     "\033l\033i· Fredrik Söderberg <mcdrill@hem.passagen.se>\n"\
  440.     "· Linus Andersson <linus_79@lover-boy.com>\n"\
  441.     "\033r\033nSwedish translation", 271 },
  442.     { (STRPTR) "\033c\033bThanks to...\033n\n"\
  443.     "\n"\
  444.     "\033l\033i· L. Peter Deutsch <ghost@aladdin.com>\n"\
  445.     "\033r\033nFor the MD5 algorithm implementation\n"\
  446.     "\n"\
  447.     "\033l\033i· Roger Clark <kaedric@texas.net>\n"\
  448.     "\033r\033nFor helping out in many ways\n"\
  449.     "\n"\
  450.     "\033l\033i· Johnny T. Nielsen <draco@mail1.stofanet.dk>\n"\
  451.     "\033r\033nFor help with the thread code\n"\
  452.     "\n"\
  453.     "\033l\033i· Luca 'Hexaae' Longone <llong@tin.it>\n"\
  454.     "\033r\033nFor the AppIcons and DeliTracker script\n"\
  455.     "\n"\
  456.     "\033cAnd to all the brave betatesters!", 272 },
  457.     { (STRPTR) "Amster Upload", 273 },
  458.     { (STRPTR) "_Play", 274 },
  459.     { (STRPTR) "_Abort", 275 },
  460.     { (STRPTR) "_Cleanup", 276 },
  461.     { (STRPTR) "Queued", 277 },
  462.     { (STRPTR) "Waiting (limit is %d)", 278 },
  463.     { (STRPTR) "Preparing", 279 },
  464.     { (STRPTR) "Connecting", 280 },
  465.     { (STRPTR) "Requesting", 281 },
  466.     { (STRPTR) "Initializing", 282 },
  467.     { (STRPTR) "Downloading", 283 },
  468.     { (STRPTR) "Uploading", 284 },
  469.     { (STRPTR) "\033bFinished", 285 },
  470.     { (STRPTR) "\033bAborted", 286 },
  471.     { (STRPTR) "Stalled", 287 },
  472.     { (STRPTR) "\033bError", 288 },
  473.     { (STRPTR) "\033bCan't open file (%ld)", 289 },
  474.     { (STRPTR) "\033bRead error (%ld)", 290 },
  475.     { (STRPTR) "\033bWrite error (%ld)", 291 },
  476.     { (STRPTR) "\033bNet error (%ld)", 292 },
  477.     { (STRPTR) "\033bTimed out", 293 },
  478.     { (STRPTR) "\033bConnection refused", 294 },
  479.     { (STRPTR) "\033bConnection reset", 295 },
  480.     { (STRPTR) "\033bBroken pipe", 296 },
  481.     { (STRPTR) "\033bUser logged out", 297 },
  482.     { (STRPTR) "\033bFile not found", 298 },
  483.     { (STRPTR) "\033bInvalid request", 299 },
  484.     { (STRPTR) "\033bTeaser", 300 },
  485.     { (STRPTR) "\033bBusy", 301 },
  486.     { (STRPTR) "Connect to...", 302 },
  487.     { (STRPTR) "Server", 303 },
  488.     { (STRPTR) "Username", 304 },
  489.     { (STRPTR) "Password", 305 },
  490.     { (STRPTR) "Register account", 306 },
  491.     { (STRPTR) "_Connect", 307 },
  492.     { (STRPTR) "Navigator", 308 },
  493.     { (STRPTR) "Server", 309 },
  494.     { (STRPTR) "Comment", 310 },
  495.     { (STRPTR) "_Connect", 311 },
  496.     { (STRPTR) "_Add", 312 },
  497.     { (STRPTR) "_Remove", 313 },
  498.     { (STRPTR) "_Update", 314 },
  499.     { (STRPTR) "\033bDO NOT PRESS THIS BUTTON!", 315 },
  500.     { (STRPTR) "-New server-", 316 },
  501.     { (STRPTR) "\033bServer", 317 },
  502.     { (STRPTR) "\033bLast online", 318 },
  503.     { (STRPTR) "\033bComment", 319 },
  504.     { (STRPTR) "\033bPing", 320 },
  505.     { (STRPTR) "Spawn external MP3 player to play selected\n"\
  506.     "file. You can set up your favourite player\n"\
  507.     "in the events section of the configuration\n"\
  508.     "window.", 321 },
  509.     { (STRPTR) "Abort the selected transfer.", 322 },
  510.     { (STRPTR) "Attempt to resume download of selected file.\n"\
  511.     "A requester will pop up asking for confirmation.", 323 },
  512.     { (STRPTR) "Flush all finished, aborted and\n"\
  513.     "unsuccesful transfers from list.", 324 },
  514.     { (STRPTR) "Global message from %s", 325 }
  515. };
  516.  
  517. STATIC struct Catalog *AmsterCatalog = NULL;
  518. #ifdef LOCALIZE_V20
  519. STATIC STRPTR AmsterStrings = NULL;
  520. STATIC ULONG AmsterStringsSize;
  521. #endif
  522.  
  523.  
  524. #if defined(_DCC)
  525. STATIC __autoexit VOID _STDCloseAmsterCatalog(VOID)
  526. #elif defined(__SASC)
  527. VOID _STDCloseAmsterCatalog(VOID)
  528. #elif defined(__GNUC__)
  529. STATIC VOID _STDCloseAmsterCatalog(VOID)
  530. #else
  531. VOID CloseAmsterCatalog(VOID)
  532. #endif
  533.  
  534. {
  535.     if (AmsterCatalog) {
  536.     CloseCatalog(AmsterCatalog);
  537.     }
  538. #ifdef LOCALIZE_V20
  539.     if (AmsterStrings) {
  540.     FreeMem(AmsterStrings, AmsterStringsSize);
  541.     }
  542. #endif
  543. }
  544.  
  545.  
  546. #if defined(_DCC)
  547. STATIC __autoinit VOID _STIOpenAmsterCatalog(VOID)
  548. #elif defined(__SASC)
  549. VOID _STIOpenAmsterCatalog(VOID)
  550. #elif defined(__GNUC__)
  551. VOID _STIOpenAmsterCatalog(VOID)
  552. #else
  553. VOID OpenAmsterCatalog(VOID)
  554. #endif
  555.  
  556. {
  557.     if (LocaleBase) {
  558.     if ((AmsterCatalog = OpenCatalog(NULL, (STRPTR) "Amster.catalog",
  559.                      OC_BuiltInLanguage, "english",
  560.                      OC_Version, 0,
  561.                      TAG_DONE))) {
  562.         struct FC_String *fc;
  563.         int i;
  564.  
  565.         for (i = 0, fc = Amster_Strings;  i < 326;  i++, fc++) {
  566.          fc->msg = GetCatalogStr(AmsterCatalog, fc->id, (STRPTR) fc->msg);
  567.         }
  568.     }
  569.     }
  570. }
  571.  
  572. #if defined(__GNUC__)
  573. __asm ("  .text;  .stabs \"___CTOR_LIST__\",22,0,0,__STIOpenAmsterCatalog");
  574. __asm ("  .text;  .stabs \"___DTOR_LIST__\",22,0,0,__STDCloseAmsterCatalog");
  575. #endif
  576.  
  577.  
  578.  
  579. #ifdef LOCALIZE_V20
  580. VOID InitAmsterCatalog(STRPTR language)
  581.  
  582. {
  583.     struct IFFHandle *iffHandle;
  584.  
  585.     /*
  586.     **  Use iffparse.library only, if we need to.
  587.     */
  588.     if (LocaleBase  ||  !IFFParseBase  ||  !language  ||
  589.     Stricmp(language, "english") == 0) {
  590.     return;
  591.     }
  592.  
  593.     if ((iffHandle = AllocIFF())) {
  594.     char path[128]; /* Enough to hold 4 path items (dos.library 3.1)    */
  595.     strcpy(path, "PROGDIR:Catalogs");
  596.     AddPart((STRPTR) path, language, sizeof(path));
  597.     AddPart((STRPTR) path, "Amster.catalog", sizeof(path));
  598.     if (!(iffHandle->iff_Stream = Open((STRPTR) path, MODE_OLDFILE))) {
  599.         strcpy(path, "LOCALE:Catalogs");
  600.         AddPart((STRPTR) path, language, sizeof(path));
  601.         AddPart((STRPTR) path, language, sizeof(path));
  602.         iffHandle->iff_Stream = Open((STRPTR) path, MODE_OLDFILE);
  603.     }
  604.  
  605.     if (iffHandle->iff_Stream) {
  606.         InitIFFasDOS(iffHandle);
  607.         if (!OpenIFF(iffHandle, IFFF_READ)) {
  608.         if (!PropChunk(iffHandle, MAKE_ID('C','T','L','G'),
  609.                    MAKE_ID('S','T','R','S'))) {
  610.             struct StoredProperty *sp;
  611.             int error;
  612.  
  613.             for (;;) {
  614.             if ((error = ParseIFF(iffHandle, IFFPARSE_STEP))
  615.                    ==  IFFERR_EOC) {
  616.                 continue;
  617.             }
  618.             if (error) {
  619.                 break;
  620.             }
  621.  
  622.             if ((sp = FindProp(iffHandle, MAKE_ID('C','T','L','G'),
  623.                        MAKE_ID('S','T','R','S')))) {
  624.                 /*
  625.                 **  Check catalog and calculate the needed
  626.                 **  number of bytes.
  627.                 **  A catalog string consists of
  628.                 **      ID (LONG)
  629.                 **      Size (LONG)
  630.                 **      Bytes (long word padded)
  631.                 */
  632.                 LONG bytesRemaining;
  633.                 LONG *ptr;
  634.  
  635.                 AmsterStringsSize = 0;
  636.                 bytesRemaining = sp->sp_Size;
  637.                 ptr = (LONG *) sp->sp_Data;
  638.  
  639.                 while (bytesRemaining > 0) {
  640.                 LONG skipSize, stringSize;
  641.  
  642.                 ptr++;                  /*  Skip ID     */
  643.                 stringSize = *ptr++;
  644.                 skipSize = ((stringSize+3) >> 2);
  645.  
  646.                 AmsterStringsSize += stringSize+1;  /*  NUL */
  647.                 bytesRemaining -= 8 + (skipSize << 2);
  648.                 ptr += skipSize;
  649.                 }
  650.  
  651.                 if (!bytesRemaining  &&
  652.                 (AmsterStrings = AllocMem(AmsterStringsSize, MEMF_ANY))) {
  653.                 STRPTR sptr;
  654.  
  655.                 bytesRemaining = sp->sp_Size;
  656.                 ptr = (LONG *) sp->sp_Data;
  657.                 sptr = AmsterStrings;
  658.  
  659.                 while (bytesRemaining) {
  660.                     LONG skipSize, stringSize, id;
  661.                     struct FC_String *fc;
  662.                     int i;
  663.  
  664.                     id = *ptr++;
  665.                     stringSize = *ptr++;
  666.                     skipSize = ((stringSize+3) >> 2);
  667.  
  668.                     CopyMem(ptr, sptr, stringSize);
  669.                     bytesRemaining -= 8 + (skipSize << 2);
  670.                     ptr += skipSize;
  671.  
  672.                     for (i = 0, fc = Amster_Strings;  i < 326;  i++, fc++) {
  673.                     if (fc->id == id) {
  674.                         fc->msg = sptr;
  675.                     }
  676.                     }
  677.  
  678.                     sptr += stringSize;
  679.                     *sptr++ = '\0';
  680.                 }
  681.                 }
  682.                 break;
  683.             }
  684.             }
  685.         }
  686.         CloseIFF(iffHandle);
  687.         }
  688.         Close(iffHandle->iff_Stream);
  689.     }
  690.     FreeIFF(iffHandle);
  691.     }
  692. }
  693. #endif
  694.